package cc.tuhaolicai.mt.user.mobile.config;

import cc.tuhaolicai.mt.user.mobile.plugin.MongoPlugin;
import cc.tuhaolicai.mt.user.mobile.plugin.RedisPlugin;
import com.jfinal.config.Plugins;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.IPlugin;
import net.dreamlu.event.EventPlugin;
import org.asyou.mongo.base.MongoConfig;
import org.asyou.redis.base.RedisConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author SeanDragon
 *         Create By 2017-05-09 13:36
 */
public class ConfigPlugin {

    public static final Logger log = LoggerFactory.getLogger(ConfigPlugin.class);

    public static void config(Plugins plugins) {
        plugins.add(getEventPlugin());
        plugins.add(getRedisPlugin());
        plugins.add(getMongoPlugin());
    }


    public static IPlugin getMongoPlugin() {
        log.info("configPlugin MongoPlugin 配置Mongo插件");
        MongoConfig mongoConfig = new MongoConfig();
        mongoConfig.setId(PropKit.get("config.mongo.id"));
        mongoConfig.setHostName(PropKit.get("config.mongo.host"));
        mongoConfig.setPort(PropKit.getInt("config.mongo.port"));
        mongoConfig.setDatabaseName(PropKit.get("config.mongo.database"));
        mongoConfig.setPoolSize(PropKit.getInt("config.mongo.poolSize"));
        mongoConfig.setMaxWaitTime(PropKit.getInt("config.mongo.maxWaitTime"));
        mongoConfig.setConnectTimeout(PropKit.getInt("config.mongo.connectTimeout"));
        mongoConfig.setBlockSize(PropKit.getInt("config.mongo.blockSize"));
        return new MongoPlugin(mongoConfig);
    }

    private static IPlugin getEventPlugin() {
        log.info("configPlugin EventPlugin 配置Event插件");
        return new EventPlugin(true,"cc.tuhaolicai.mt.service.event",true);
    }


    private static IPlugin getRedisPlugin() {
        log.info("configPlugin RedisPlugin 配置Redis插件");
        RedisConfig redisConfig = new RedisConfig(PropKit.get("config.redis.id"), PropKit.get("config.redis.hostName"), Integer.valueOf(PropKit.get("config.redis.port")), null, null, null);
        return new RedisPlugin(redisConfig);
    }
}
